package com.project.common.domain.dto;

import com.fasterxml.jackson.annotation.JsonIgnore;
import com.project.common.domain.entity.Department;
import com.project.common.domain.entity.Permissions;
import com.project.common.domain.entity.Role;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;

import java.util.List;

/**
 * SysUserDTO
 *
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(callSuper=true)
public class UserDTO extends BaseIdDTO {
    @Schema(description = "账号")
    private String name;
    @JsonIgnore
    private String password;
    @Schema(description = "昵称")
    private String nick;
    @Schema(description = "真实姓名")
    private String realName;
    @Schema(description = "头像")
    private String avatar;
    @Schema(description = "手机号码")
    private String phone;
    @Schema(description = "描述")
    private String description;
    @Schema(description = "1正常，2禁用，3过期，4拉黑，0删除")
    private Integer status;
    @Schema(description = "活跃度（分钟）")
    private Integer liveness;
    @Schema(description = "部门编码")
    private String orgKey;
    @Schema(description = "岗位角色编码")
    private String roleKeys;
    @Schema(description = "数据范围（0-所有，1-下级岗位，2-本组织，3-本人）")
    private Integer scope;
    @Schema(description = "来源，admin-管理端 app-APP端 wx-小程序 h5-手机WEB")
    private String source;
    @Schema(description = "工作状态（tb_sys_dic-id code='resume-job_status'）")
    private Long jobStatus;
    @Schema(description = "工作状态")
    private String jobStatusName;
    @Schema(description = "企业ID")
    private Long companyId;
    @Schema(description = "企业名称")
    private String companyName;
    @Schema(description = "企业审核状态（0-待审核，1-审核通过，2-审核驳回）")
    private Integer acceptStatus;
    @Schema(description = "部门ID")
    private Long departmentId;
    @Schema(description = "部门")
    private Department department;
    @Schema(description = "岗位ID列表")
    private List<Long> roleIds;
    @Schema(description = "岗位列表")
    private List<Role> roles;
    @Schema(description = "岗位名称")
    private String roleName;
    @Schema(description = "备注")
    private String remark;
    @Schema(description = "菜单列表")
    List<MenuDTO> menuList;
    @Schema(description = "权限列表")
    List<Permissions> permissionsList;
    @Schema(description = "用户类型（0-会员,1-员工，2-子管理员，3-企业管理员，4-系统总管理员）")
    private Integer type;
    @Schema(description = "登录TOKEN")
    private String tokenValue;
}
